package com.cskaoyan.javase.oop2._1extends._1relation;

/**
 * 继承中的父子类的关系:
 * 子类和父类的关系:
 * 从属关系上来说，继承中的父子类具有 "is-a" 关系。即子类 "is-a" 父类。子类可以近似地看成是一个父类，子类可以当作父类来使用。
 *      子类是一个父类
 *
 * 为什么这么说?
 *      1.从代码角度上来说,一个子类对象可以用父类的引用来接收
 *          这样做,相当于把一个子类对象,当成父类对象来使用
 *          所以这就是"子类(对象)可以看成一个父类(对象)"
 *
 *      2.从数据类型的定义上来说.数据+操作就是数据类型
 *          而对于引用数据类型来说,数据=成员变量,操作=成员方法
 *          子类通过继承得到父类成员,从数据类型来说,就可以当成父类
 *          子类"is-a"父类
 *
 *      3.从功能角度来说,子类往往比父类功能更强,至少不会更弱
 *          所以子类"is-a"父类
 *
 *      4.直观角度,直白的来说:
 *          Animal和Cat,Dog 很明显Animal是父类,因为猫和狗都是动物
 *          Person和Teacher,Student,很明显Person应该是父类
 *          注: 这种方式只能应对常见和简单的场景，实际开发很多时候没有直白的逻辑关系，就需要通过设计文档来了解相关信息。
 *
 * 当然，反过来，父类和子类有什么关系吗？父类能当子类用吗？
 * 显然不能，父类和子类没有直接关系。并且子类往往比父类功能要强大，父类不能当成子类使用~
 *
 * 综上,在实际继承时,不要光考虑成员的复用,更重要的是考虑两个类的关系"is-a"关系
 *
 *
 * @since 09:58
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        Son s = new Son();
        s.testFather();

        Father fs = new Son();
    }
}

class Father {
    public void testFather() {
    }
}

class Son extends Father {
    public void testSon() {
    }
}
